package com.cty.advice;

//aop编程的类

/*
* 1.首先定义增强方法
* 2.增强方法的种类:前置增强@Before，后置增强@AfterReturning，异常增强@AfterThrowing，最后增强@After，环绕增强@Around
*   在增强方法上加注解表明是那种增强
* 3.在增强加入ioc的注解
*   @Component
*   加入@Aspect注解表明这是一个切面
* 4.在配置文件中打开切面的开关
*
* */

import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

@Component
@Aspect
@Order(20)//给增强设置优先级，()中的数越小优先级越高，优先级越高的增强，前置先执行后置后执行，以包裹的形式
public class LogAdvice {

    @Before("com.cty.pointcut.MyPc.pc()")//在该内部写入切点
    public void start() {
        System.out.println("方法开始了！");
    }

    @AfterReturning("com.cty.pointcut.MyPc.pc()")//在该内部写入切点
    public void end() {
        System.out.println("方法结束了！");
    }

    @AfterThrowing("com.cty.pointcut.MyPc.pc()")//在该内部写入切点
    public void error() {
        System.out.println("方法报错了！");
    }
}
